Database servers generally may be thought of as comprising two layers: a database layer and a storage layer. The database layer is responsible for receiving and interpreting requests from users and applications (e.g., SQL queries) and for performing manipulations and other operations on data identified in the requests. The storage layer, on the other hand, is generally responsible for storing, modifying, and accessing data on one or more storage devices.
Typically, the storage layer of a database server is tightly coupled to the database layer. For example, database servers are commonly configured as unitary applications that are capable of receiving requests, accessing any relevant data from storage, and performing any request-specific operations on the data. However, recent advances in database technology have included the introduction of so-called “database machines” that, among other features, provide a more distinct separation between the database layer and the storage layer. An example of such a database machine is the Exadata database machine available from Oracle Corporation.
One benefit of separating the storage layer from the database layer is the ability for the storage layer to more efficiently implement certain functionality that might normally be handled by the database layer. This functionality is generally referred to herein as “smart functionality.” For example, smart functionality may include operations such as scans, incremental backup, file creation, or any other operations that may be performed by the storage layer of a database machine on behalf of the database layer.
Another benefit provided by database machines is the ability to consolidate multiple database servers into a single database machine. For example, different departments within a large business organization may each separately develop database applications on separate hardware. A database machine is capable of simultaneously hosting each of the separately developed database applications, thereby reducing the overall amount of hardware for which the business organization is responsible.
Presently, storage server software that runs on the storage layer of database machines is configured to support a particular version of database server software running in the database layer. This is due in part to the communication that occurs between the database layer and the storage layer to coordinate the execution of requests. For example, each database server version may be implemented to communicate using a particular set of data structures, messaging protocols, and other version-specific characteristics specific to that database server version.
One possibility for supporting multiple versions of a database server within a database machine is to vertically partition the storage layer such that a separate partition is created for each version of a database server for which support is desired. In this manner, each database server could communicate with only the storage layer partition corresponding to the version of the database server. However, vertical partitioning of the storage layer may result in ineffective usage of the shared resources available to the storage layer.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.